const app = getApp();
const api = require('../../utils/api.js');

Page({
  data: {
    // 用户信息
    userInfo: {
      nickname: '治疗用户',
      avatar_url: 'https://fanxiao.oss-cn-guangzhou.aliyuncs.com/static/uploads/images/2025/09/16/175801428268c92b4ae6ef4.png'
    },
    
    // 用户统计
    totalDays: 0,
    
    // 用户模板
    userTemplates: [],
    
    // 弹窗状态
    showTemplateModal: false,
    
    // 模板编辑
    editingTemplate: null,
    templateForm: {
      name: '',
      mode: 'tDCS+',
      current: 1.0,
      time: 20,
      frequency: 10.0
    },
    
    // 视频列表
    videoList: [
      {
        id: 1,
        title: '设备连接教程',
        duration: '3:25',
        poster: '../../images/video1-thumb.jpg',
        url: 'https://example.com/video1.mp4'
      },
      {
        id: 2,
        title: '参数设置指南',
        duration: '5:12',
        poster: '../../images/video2-thumb.jpg',
        url: 'https://example.com/video2.mp4'
      },
      {
        id: 3,
        title: '安全使用须知',
        duration: '4:08',
        poster: '../../images/video3-thumb.jpg',
        url: 'https://example.com/video3.mp4'
      }
    ],
    
    // FAQ列表
    faqList: [
      {
        id: 1,
        question: '设备无法连接怎么办？',
        answer: '请确保设备已开机，蓝牙已开启，设备距离手机不超过10米。如仍无法连接，请重启设备和小程序。',
        expanded: false
      },
      {
        id: 2,
        question: '治疗过程中有轻微刺痛感正常吗？',
        answer: '轻微的刺痛感是正常的，这是电流刺激的正常反应。如果感觉过于强烈或不适，请立即停止治疗并咨询医生。',
        expanded: false
      },
      {
        id: 3,
        question: '每天可以治疗几次？',
        answer: '建议每天治疗1-2次，每次间隔至少4小时。具体治疗频次请遵医嘱。',
        expanded: false
      },
      {
        id: 4,
        question: '治疗时可以做其他事情吗？',
        answer: '治疗期间建议保持安静，可以轻松阅读或听音乐，避免剧烈运动或情绪激动。',
        expanded: false
      },
      {
        id: 5,
        question: '设备电量不足怎么办？',
        answer: '当电量低于20%时，请及时充电。充电时请使用原装充电器，避免边充电边治疗。',
        expanded: false
      }
    ]
  },

  onShow() {
    this.loadUserData();
  },

  // 加载用户数据
  async loadUserData() {
    // 从全局数据获取用户信息
    const app = getApp();
    const userInfo = app.globalData.userInfo;
    
    if (userInfo) {
      this.setData({
        'userInfo.nickname': userInfo.nickname.slice(0,8) || '治疗用户',
        
      });
    }
    
    // 加载用户模板
    try {
      // 优先从服务器获取用户模板
      const response = await api.getUserTreatmentTemplates();
      const templates = response.templates || [];
      this.setData({ userTemplates: templates });
      
      // 同时更新本地存储
      wx.setStorageSync('userTemplates', templates);
    } catch (error) {
      console.error('获取用户模板失败:', error);
      // 如果服务器获取失败，则从本地存储获取
      const templates = wx.getStorageSync('userTemplates') || [];
      this.setData({ userTemplates: templates });
    }
    
    // 计算治疗天数
    this.calculateTreatmentDays();
  },

  // 计算治疗天数
  calculateTreatmentDays() {
    const records = wx.getStorageSync('treatmentRecords') || [];
    const uniqueDays = new Set();
    
    records.forEach(record => {
      const date = new Date(record.date);
      const dayKey = `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;
      uniqueDays.add(dayKey);
    });
    
    this.setData({
      totalDays: uniqueDays.size
    });
  },

  // 新增模板
  addTemplate() {
    this.setData({
      editingTemplate: null,
      templateForm: {
        name: '',
        mode: 'tDCS+',
        current: 1.0,
        time: 20,
        frequency: 10.0
      },
      showTemplateModal: true
    });
  },

  // 编辑模板
  editTemplate(e) {
    const template = e.currentTarget.dataset.template;
    this.setData({
      editingTemplate: template,
      templateForm: { ...template },
      showTemplateModal: true
    });
  },

  // 删除模板
  deleteTemplate(e) {
    const templateId = e.currentTarget.dataset.id;
    
    wx.showModal({
      title: '确认删除',
      content: '确定要删除这个参数模板吗？',
      success: (res) => {
        if (res.confirm) {
          let templates = wx.getStorageSync('userTemplates') || [];
          templates = templates.filter(template => template.id !== templateId);
          wx.setStorageSync('userTemplates', templates);
          
          this.setData({ userTemplates: templates });
          
          wx.showToast({
            title: '删除成功',
            icon: 'success'
          });
        }
      }
    });
  },

  // 模板名称输入
  onTemplateNameInput(e) {
    this.setData({
      'templateForm.name': e.detail.value
    });
  },

  // 选择模板模式
  selectTemplateMode(e) {
    const mode = e.currentTarget.dataset.mode;
    this.setData({
      'templateForm.mode': mode
    });
  },

  // 模板电流变化
  onTemplateCurrent(e) {
    this.setData({
      'templateForm.current': parseFloat(e.detail.value)
    });
  },

  // 选择模板时间
  selectTemplateTime(e) {
    const time = parseInt(e.currentTarget.dataset.time);
    this.setData({
      'templateForm.time': time
    });
  },

  // 模板频率变化
  onTemplateFrequency(e) {
    this.setData({
      'templateForm.frequency': parseFloat(e.detail.value)
    });
  },

  // 保存模板
  saveTemplate() {
    const form = this.data.templateForm;
    
    if (!form.name.trim()) {
      wx.showToast({
        title: '请输入模板名称',
        icon: 'none'
      });
      return;
    }
    
    let templates = wx.getStorageSync('userTemplates') || [];
    
    if (this.data.editingTemplate) {
      // 编辑模式
      const index = templates.findIndex(t => t.id === this.data.editingTemplate.id);
      if (index !== -1) {
        templates[index] = { ...form, id: this.data.editingTemplate.id };
      }
    } else {
      // 新增模式
      const newTemplate = {
        ...form,
        id: Date.now()
      };
      templates.push(newTemplate);
    }
    
    wx.setStorageSync('userTemplates', templates);
    
    this.setData({
      userTemplates: templates,
      showTemplateModal: false
    });
    
    wx.showToast({
      title: '保存成功',
      icon: 'success'
    });
  },

  // 关闭模板弹窗
  closeTemplateModal() {
    this.setData({
      showTemplateModal: false
    });
  },

  // 跳转到视频教程页面
  goToVideo() {
    wx.navigateTo({
      url: '/pages/video/video'
    });
  },

  // 跳转到常见问题页面
  goToFAQ() {
    wx.navigateTo({
      url: '/pages/faq/faq'
    });
  },

  // 跳转到关于我们页面
  goToAbout() {
    wx.navigateTo({
      url: '/pages/about/about'
    });
  },

  // 跳转到联系客服页面
  goToContact() {
    wx.navigateTo({
      url: '/pages/contact/contact'
    });
  },

  // 跳转到导出数据页面
  goToExport() {
    wx.navigateTo({
      url: '/pages/export/export'
    });
  },

  // 跳转到清除数据页面
  goToClear() {
    wx.navigateTo({
      url: '/pages/clear/clear'
    });
  },

  // 显示视频教程
  showVideoTutorial() {
    this.setData({
      showVideoModal: true
    });
  },

  // 播放视频
  playVideo(e) {
    const video = e.currentTarget.dataset.video;
    // 这里可以实现视频播放逻辑
    wx.showToast({
      title: `播放: ${video.title}`,
      icon: 'none'
    });
  },

  // 联系客服
  contactService() {
    wx.showModal({
      title: '联系客服',
      content: '客服热线：400-123-4567\\n工作时间：9:00-18:00',
      confirmText: '拨打电话',
      success: (res) => {
        if (res.confirm) {
          wx.makePhoneCall({
            phoneNumber: '4001234567',
            fail: () => {
              wx.showToast({
                title: '拨号失败',
                icon: 'none'
              });
            }
          });
        }
      }
    });
  },

  // 导出数据
  exportData() {
    const records = wx.getStorageSync('treatmentRecords') || [];
    
    if (records.length === 0) {
      wx.showToast({
        title: '暂无数据可导出',
        icon: 'none'
      });
      return;
    }
    
    // 生成CSV格式数据
    let csvContent = '治疗时间,治疗模式,电流强度(mA),设定时长(分钟),实际时长(分钟),频率(Hz),完成状态\
';

    records.forEach(record => {
      const date = new Date(record.date).toLocaleString();
      const mode = record.params.mode;
      const current = record.params.current;
      const plannedTime = record.params.time;
      const actualTime = (Math.round(record.duration * 10) / 10).toString();
      // 确保小数点后有一位数字
      const formattedActualTime = actualTime.indexOf('.') > -1 ? 
        (actualTime.split('.')[1].length == 1 ? actualTime : actualTime + '0') : 
        actualTime + '.0';
      const frequency = record.params.frequency || '';
      const status = record.completed ? '已完成' : '未完成';
      
      csvContent += `${date},${mode},${current},${plannedTime},${formattedActualTime},${frequency},${status}\
`;
    });
    
    // 保存到临时文件
    const fs = wx.getFileSystemManager();
    const filePath = `${wx.env.USER_DATA_PATH}/treatment_records.csv`;
    
    fs.writeFile({
      filePath: filePath,
      data: csvContent,
      encoding: 'utf8',
      success: () => {
        wx.showModal({
          title: '导出成功',
          content: '数据已导出，是否分享？',
          success: (res) => {
            if (res.confirm) {
              wx.shareFileMessage({
                filePath: filePath,
                fileName: '治疗记录.csv'
              });
            }
          }
        });
      },
      fail: () => {
        wx.showToast({
          title: '导出失败',
          icon: 'none'
        });
      }
    });
  },

  // 清除数据
  clearData() {
    wx.showModal({
      title: '清除数据',
      content: '此操作将清除所有治疗记录和自定义参数，且无法恢复，确定继续吗？',
      confirmText: '确定清除',
      confirmColor: '#ff4444',
      success: (res) => {
        if (res.confirm) {
          wx.showModal({
            title: '最后确认',
            content: '数据清除后无法恢复，请再次确认！',
            confirmText: '确定清除',
            confirmColor: '#ff4444',
            success: (res2) => {
              if (res2.confirm) {
                // 清除所有数据
                wx.removeStorageSync('treatmentRecords');
                wx.removeStorageSync('userTemplates');
                
                // 重置为默认模板
                const defaultTemplates = [
                  {
                    id: 1,
                    name: '默认模式',
                    mode: 'tDCS+',
                    current: 1.0,
                    time: 20,
                    frequency: 10.0
                  }
                ];
                wx.setStorageSync('userTemplates', defaultTemplates);
                
                // 刷新数据
                this.loadUserData();
                
                wx.showToast({
                  title: '数据已清除',
                  icon: 'success'
                });
              }
            }
          });
        }
      }
    });
  }
});